<html>
<head><meta charset="utf-8"><title>polonius questions · t-compiler/wg-polonius · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/index.html">t-compiler/wg-polonius</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html">polonius questions</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="214863625"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214863625" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Xavier Denis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214863625">(Oct 28 2020 at 16:39)</a>:</h4>
<p>I also have some more general questions about polonius:</p>
<ul>
<li>is the <code>borrow_live_at</code> relation considered 'bug-free' ? I have some examples that have surprising results. </li>
<li>am I correct to assume that a <code>Loan</code> in the polonius sense always has exactly one owner at any point it is alive? (anything else wouldn't really make sense tbh)</li>
</ul>



<a name="214872157"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214872157" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214872157">(Oct 28 2020 at 17:37)</a>:</h4>
<p>for <code>borrow_live_at</code> it's a bit subtle, first of all the relation is not completely, strictly speaking, needed to be materialized. The computation's goal is to find different types of errors, and those don't require computing the full contents of origins at all points of the CFG: as an oversimplified example, illegal access errors can only happen for invalidated loans, therefore, tracking the others is not needed since they can't produce errors.</p>



<a name="214872222"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214872222" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214872222">(Oct 28 2020 at 17:38)</a>:</h4>
<p>Similarly, illegal subset errors can only happen on placeholder loans (which are to be phased out anyways, but it's just to illustrate my point) -- and earlier in the pipeline, before doing the full location-sensitive analysis, there's a location-insensitive pre-pass which first checks (and filters out (WIP)) the loans to limit the full pass to those possibly error-producing loans (origins will in the future be similarly filtered at this point, if they don't participate in subset or illegal access errors, there's no need to compute their contents), and in this case, the relation wouldn't be computed at all.</p>



<a name="214872304"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214872304" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214872304">(Oct 28 2020 at 17:38)</a>:</h4>
<p>It used to be considered bug-free by itself, but it's not used by itself anymore: it's at the end of the pipeline, after move/init analysis whose correctness and equivalence with rustc has not been validated yet (and there have been false positives before, and there may still be) <span class="user-mention" data-user-id="204115">@Albin Stjerna</span> is working on this specific part and would know more than I do</p>



<a name="214872408"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214872408" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214872408">(Oct 28 2020 at 17:39)</a>:</h4>
<p>all these can make for surprising results :)</p>



<a name="214872815"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214872815" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214872815">(Oct 28 2020 at 17:42)</a>:</h4>
<p>for the other question I guess it depends on what you mean by "owner": if you mean origin then not really, a loan can flow into placeholder origins (AKA universal region / free region) which are live at all points</p>



<a name="214877771"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214877771" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Xavier Denis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214877771">(Oct 28 2020 at 18:16)</a>:</h4>
<p>By owner I mean a <code>Variable</code>, though that may not even make sense in the context of polonius. </p>
<p>Thanks for the explanation about <code>borrow_live_at</code>, though it's also disappointing for my purpose. I guess I'll need to reimplement a version of polonius if I want to get the liveness of borrows at all points in the CFG. Though I'm really only interested in the points loans die at.</p>
<p>In short I'm hoping to use polonius to identify when borrows die, and which variable was holding the borrow when it died. The second part I should be able to calculate by considering moves in the MIR graph, but for the first bit I need polonius to tell me which borrows are alive at each point.</p>



<a name="214878483"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214878483" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Xavier Denis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214878483">(Oct 28 2020 at 18:22)</a>:</h4>
<p>As far as I can tell the information returned from <code>borrow_live_at</code> works for me, though there are some surprising results, they don't seem lead me to do anything unsound. I hope that access to this relation stays as polonius evolves!</p>



<a name="214878638"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214878638" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214878638">(Oct 28 2020 at 18:24)</a>:</h4>
<p>for the foreseeable future (as you can see there's not a lot of activity ATM) you <em>should</em> be able to only use the parts of the pipeline you need: liveness -&gt; move/init analysis (with the caveat I've mentioned earlier) -&gt; <code>Naive</code> variant (bypassing the LocationInsensitive, and Optimized variants, the latter of which only computes the subset TC and contained loans on some of the origins dying at edges, etc)</p>



<a name="214878685"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214878685" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Xavier Denis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214878685">(Oct 28 2020 at 18:24)</a>:</h4>
<p>yep I currently only use the naive version, I'm definitely not as performance sensitive as rustc is</p>



<a name="214878737"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214878737" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Xavier Denis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214878737">(Oct 28 2020 at 18:25)</a>:</h4>
<p>For a surprising result, I found it surprising that a loan could die in one branch of an if statement but be alive at the end</p>



<a name="214878859"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214878859" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214878859">(Oct 28 2020 at 18:26)</a>:</h4>
<p>I believe that access to the relation will be available in some form or another, especially if the datalog computation is used for validation rather than production (for performance reasons, say), especially in the Naive variant; as it's at the very least useful for debugging and testing and so on</p>



<a name="214878863"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214878863" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Xavier Denis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214878863">(Oct 28 2020 at 18:26)</a>:</h4>
<p>effectively that a program execution could follow a path where a loan disappears from the live set and re-enters later</p>



<a name="214879556"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214879556" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214879556">(Oct 28 2020 at 18:32)</a>:</h4>
<p>at the end, meaning after the branch ? this sounds like an expected case but maybe I'm misunderstanding</p>



<a name="214879764"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214879764" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214879764">(Oct 28 2020 at 18:33)</a>:</h4>
<p>(say, since the points following the branch have to expect either branch could have been taken, and expect the union of results)</p>



<a name="214879870"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214879870" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Xavier Denis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214879870">(Oct 28 2020 at 18:34)</a>:</h4>
<p>yea I guess I expected the loan to be counted as alive in a branch where it wasn't used since it would be used again in the future</p>



<a name="214879953"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214879953" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Xavier Denis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214879953">(Oct 28 2020 at 18:35)</a>:</h4>
<p>again, this behavior doesn't cause problems for me, it's just surprising</p>



<a name="214879976"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214879976" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214879976">(Oct 28 2020 at 18:35)</a>:</h4>
<p>sure :)</p>



<a name="214880070"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214880070" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Xavier Denis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214880070">(Oct 28 2020 at 18:36)</a>:</h4>
<p>since if a loan is dead in any branch it can't actually be used afterwards (if my intuition is correct) all it can do is die after the branches merge</p>



<a name="214880099"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214880099" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214880099">(Oct 28 2020 at 18:36)</a>:</h4>
<p>(the datafrog_opt variant could be useful for you to look at dying origins and similar, it <em>should</em> have the points you need)</p>



<a name="214880116"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214880116" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Xavier Denis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214880116">(Oct 28 2020 at 18:36)</a>:</h4>
<p>I actually don't need anything about origins (which are lifetimes / regions, right?)</p>



<a name="214880133"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214880133" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214880133">(Oct 28 2020 at 18:37)</a>:</h4>
<p>yeah</p>



<a name="214880147"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214880147" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Xavier Denis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214880147">(Oct 28 2020 at 18:37)</a>:</h4>
<p>yea they only matter for meta theory in my case</p>



<a name="214880216"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214880216" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214880216">(Oct 28 2020 at 18:37)</a>:</h4>
<p>I guess it depends whether you consider loans to have liveness per se, is what I mean, they're live if they're contained in an origin live at a point</p>



<a name="214880291"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214880291" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214880291">(Oct 28 2020 at 18:38)</a>:</h4>
<p>so the points where they die mixes both containment and origin liveness</p>



<a name="214880342"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214880342" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214880342">(Oct 28 2020 at 18:38)</a>:</h4>
<p>but yeah, you know better than me what you actually need of course :)</p>



<a name="214880590"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214880590" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Xavier Denis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214880590">(Oct 28 2020 at 18:41)</a>:</h4>
<p>ah hm, ok. I've pretty much ignored the <code>origin_live_on_entry</code> relation sine <code>borrow_live_at</code> seemed to be exactly what I needed. I hadn't considered that a loan could be in <code>borrow_live_at</code> after its origin had died</p>



<a name="214880790"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214880790" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Xavier Denis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214880790">(Oct 28 2020 at 18:43)</a>:</h4>
<p>ahh the theory to implementation gap :P</p>



<a name="214881082"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214881082" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214881082">(Oct 28 2020 at 18:45)</a>:</h4>
<p>loans can indeed flow from origin to origin even if they're dead or dying (that's what the opt variant tries to ensure)</p>



<a name="214881349"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214881349" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Xavier Denis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214881349">(Oct 28 2020 at 18:48)</a>:</h4>
<p>ok, printing region liveness in my debug viewer definitely helps understand this</p>



<a name="214881422"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214881422" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Xavier Denis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214881422">(Oct 28 2020 at 18:48)</a>:</h4>
<p>thanks for the help I think I understand how to correctly find where loans die now :P</p>



<a name="214881451"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214881451" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214881451">(Oct 28 2020 at 18:48)</a>:</h4>
<p>(and as you've seen origins can surprisingly "resurrect" )</p>



<a name="214881477"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214881477" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214881477">(Oct 28 2020 at 18:48)</a>:</h4>
<p>mais, de rien :) <span aria-label="baguette" class="emoji emoji-1f956" role="img" title="baguette">:baguette:</span></p>



<a name="214881479"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214881479" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Xavier Denis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214881479">(Oct 28 2020 at 18:48)</a>:</h4>
<p>yep!</p>



<a name="214882481"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214882481" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Xavier Denis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214882481">(Oct 28 2020 at 18:56)</a>:</h4>
<p>the naive version computes strictly larger relations than the opt version, correct? ie im not missing out on tuples by using the naive version?</p>



<a name="214882529"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214882529" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214882529">(Oct 28 2020 at 18:56)</a>:</h4>
<p>right</p>



<a name="214882636"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214882636" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214882636">(Oct 28 2020 at 18:57)</a>:</h4>
<p>(to sum up, loans flow from origin to origin along the CFG <em>regardless</em> of liveness, the only thing that can stop a loan from flowing is a kill point)</p>



<a name="214882805"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214882805" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Xavier Denis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214882805">(Oct 28 2020 at 18:58)</a>:</h4>
<p>yep, merci!</p>



<a name="214882833"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/polonius%20questions/near/214882833" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/polonius.20questions.html#214882833">(Oct 28 2020 at 18:58)</a>:</h4>
<p>haha</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>